
package com.joysuch.wwyt.datasync.service;

import java.lang.reflect.Method;
import java.util.List;

import com.joysuch.wwyt.datasync.DataSyncType;
import com.joysuch.wwyt.datasync.annotation.DataSync;

/**
 * 数据发生变化时，调用此类进行处理，生成数据变更服务等
 * 
 * @date 2021年1月15日 下午4:17:01
 * @since
 *
 */
public interface DataSyncProcessor {

    void processBeforeInvoking(Class domainClass, DataSync annotation, Method method, DataSyncType type,
            Object[] arguments);

    /**
     * 拦截器调用完成后，继续处理此方法。如果此方法返回的List不为空，则调用者继续处理该返回的对象。
     * 如果本处理器内已完成所有工作，返回null或空列表即可.
     * 
     * @param domainClass
     *            实体class
     * @param annotation
     *            查询方法的DataSync注解
     * @param method
     *            本次执行方法
     * @param type
     *            修改类型
     * @param arguments
     *            方法参数
     * @return
     */
    List processAfterInvoking(Class domainClass, DataSync annotation, Method method, DataSyncType type,
            Object[] arguments);

}
